Method and system for proximity-based information retrieval and exchange in ad hoc networks

ABSTRACT

A network has clients and a server. The clients can discover and be discovered by each other. Discovery includes emitting requests to and acquiring identifying information from clients within a certain geographical range. A discovering client sends all identifying information to the server. The server includes client information database and topological map, comprised of nodes representing clients and edges indicating the discovery of one client by another. When the server receives identifying information from the discovering client, the server updates the topological map and determines which neighboring clients of the discovering client matches the match criteria of the discovering client. The server may determine a discovery schedule detailing which client should discover next. The server may send the match information and discovery schedule to the discovering client, discovered clients, or a third party. The server may also store this information.

The present invention relates generally to networks, and particularly to a computer network, the elements of which can detect other elements that match a predetermined criteria.

BACKGROUND OF THE INVENTION

Computing technology has become small enough and useful enough that the general public is now carrying small computing devices on a daily basis. Initially designed to perform a specific function, such as voice communication or storing a personal address book, these devices are increasingly becoming multi-faceted in their capabilities. In addition to providing a platform upon which a wide array of applications can run, these devices are arriving on store shelves with a number of built-in technologies such as short range connectivity, like Bluetooth and IR, and Internet connectivity, like WiFi and General Packet Radio Service (GPRS). Based on these combinations of technology, it is now possible to offer products and services that find and match users based on their location and/or proximity.

Along with these advances comes a broader acceptance of the usage of those technologies for social purposes. There is an increasing number of people who are comfortable with, and accustomed to, using technology for social means, whether using the Internet to find a date, or using their PDAs to beam business cards. This convergence of technology and social interaction creates an opportunity for a new group of location or proximity based applications. These applications are aimed for fostering interactions, enhancing existing relationships, and enabling collaboration.

Ubiquitous computing envisions “smart,” everyday items that sense their surroundings and cooperate with one another. These include cell phones, PDAs, laptops, mice, keyboards, printers, cameras, earpieces for telephones, pens, televisions, and other everyday items, equipped with an Internet connection and a Bluetooth transceiver (or other recognition device). For example, a device equipped with a Bluetooth transceiver creates a short-range communication space radiating in all directions from the device, like a bubble with the device in the center. When individuals with devices equipped with Bluetooth transceivers come within close physical proximity, their respective communication spaces (or bubbles) overlap, enabling their personal mobile devices to discover and identify each other. This can be used to facilitate, augment, and promote face-to-face interactions. Furthermore, the device can be associated with a commercial entity, such as a retail outlet. This enables value-added, personalized consumer-business interactions.

All this provides opportunities for these devices, and the applications on these devices, to change how people interact and cooperate, not only between people but also between people and businesses. They contribute to a richer more valuable social experience and help promote sociability in an increasingly impersonal world. Human beings have an inherent characteristic desire for social interactions. Any encounter with another person offers a chance for conversation, for informal information exchange, for collaboration towards a common goal, and to pursue and further personal goals.

There are many methods and systems for implementing these kinds of location or proximity based applications. For instance, PanGo Proximity Platform™, www.saw-you.net, www.imahima.com, and www.trepia.com use proximity based applications. However, these current technologies have several shortcomings, including privacy issues, scalability issues, interoperability issues, and overall user experience. In fact, the majority of such systems are not truly location-based but rather depend on constant user input to demonstrate value. Furthermore these products and services are focused on specific geographical regions, and are targeted for specific uses (e.g., dating, finding nearby friends).

Several proximity aware systems have been developed. These proximity aware systems are described in R. Borovoy, et al., “Meme Tags and Community Mirrors: Moving from Conferences to Collaboration”, Proceedings of 1998 ACM Conference on Computer Supported Cooperative Work, 1998, ACM Press; Holmquist, et al., “Supporting Group Awareness with Inter-Personal Awareness Devices”, Journal of Personal Technologies, Vol. 3(1-2), p. 1321, Springer Verlag, 1999; G. Kortuem, “Proem, A Middleware Platform for Mobile Peer-to-Peer Computing”, ACM SIGMOBILE Mobile Computing and Communications Review (MC2R), Special Feature on Middleware for Mobile Computing, Vol. 6, No. 4, October 2002; and G. Korteum, et al., “When Peer-to-Peer Comes Face-to-Face: Collaborative Peer-to-Peer Computing in Mobile Ad-hoc Networks”, Proceedings of 2001 International Conference on Peer-to-Peer Computing, Aug. 27-29, 2001, Linkoping, Sweden, 2001. Some of the proximity aware systems utilize a purely peer-to-peer method of information exchange. There are many drawbacks to such systems. For example, peer-to-peer systems require a fairly large specialized application residing on the device. These applications can be resource intensive, consuming relatively large amounts of CPU time, memory, and storage, all of which are relatively scarce on mobile devices. Additionally, peer-to-peer systems are limited to only the discovery of the nearest neighbors of each of the devices. Data synchronization is also unsatisfactory, since neighboring devices are not aware of any changes in data on a nearby device until that data is re-sent. Peer-to-peer systems also have availability drawbacks because such devices must stay within a predetermined range of each other during the time required to establish pair-wise connections and perform data exchange. Finally, peer-to-peer systems sometimes present the problem of disclosing private information that users have not explicitly authorized to be disclosed.

Other proximity aware systems add a storage server. These proximity aware systems are described in P. Dahlber, et al., “Proxy Lady: Mobile Support for Opportunistic Communication”, Scandinavian Journal of Information Systems 13(1), 2001; and J. Bergvist, et al., “Location Awareness and Local Mobility: Exploring Proximity Awareness”, Proceedings of the 22^(nd) IRIS Conference (Information Systems Research Seminar in Scandinavia), University of Jyväiskyla Press, 1999. The storage server is only used for periodic non-real-time data synchronization. This approach alleviates some of the storage requirements on the devices. Additionally proximity aware systems exist that are used specifically for gaming purposes. One such system is described in S. Björk, et al., “Pirates!—Using the Physical World as a Game Board”, Interact 2001, IFIP TC.13 Conference on Human-Computer Interaction, July 9-13, Tokyo, Japan. All of the above mentioned limitations hold, however, because the data exchange between devices in these systems is still peer-to-peer. All of these systems used specialized hardware and communication protocols specially designed for that particular system.

Other proximity aware systems add a registry server. These systems are described in T. Kindberg, et al., “People, Places, Things: Web Presence for the Real World”, Mobile Networks and Applications (MONET), 7(5), October 2002, 365-376 and T. Kindberg, et al., “Implementing physical hyperlinks using ubiquitous identifier resolution”, Proceedings of the Eleventh International World Wide Web Conference, WWW2002, Honolulu, Hawaii, USA, 7-11 May 2002, ACM, 2002, 191-199. This registry server acts as a static listing of name-value pairs associating arbitrary information with physical objects. This allows objects to be “tagged” with information, however no context-aware matching is performed.

The highly dynamic nature of mobile ad-hoc networks require timely and efficient algorithms through which a computing device can detect the presence of neighboring devices. These algorithms should enable moving devices to discover each other without overloading the network with traffic. Several distributed decentralized discovery algorithms have been proposed (e.g., Theodoros Salonidis, et al., “Distributed Topology Construction of Bluetooth Personal Area Networks”, Proceedings of IEEE INFOCOM 2001, Anchorage, Ak., 2001; Theodoros Salonidis, et al., “Proximity Awareness and Fast Connection Establishment in Bluetooth”, Proceedings of the First Annual ACM Workshop on Mobile Ad Hoc Networking and Compubint (MOBIHOC), Boston, Mass., 2000; Michael Nidd, “Service Discovery in DEAPspace”, IEEE Personal Communications, pp. 39-45, August 2001; Salonidis, et al., U.S. patent application Pub. No. US 2003/0096576 A1, “Method and Apparatus for Connecting Devices Via an Ad Hoc Wireless Communication Network”; and Hermann, et al., U.S. patent application Pub. No. US 2002/0176391 A1, “Method and Device for Prompt and Efficient Service Discovery in Wireless Networks”). The decentralization of these ad-hoc networks for which these algorithms are employed are a drawback that usually results in relatively complex algorithms.

SUMMARY OF THE INVENTION

The present invention is a system and method for devices equipped with recognition equipment (e.g., Bluetooth transceivers) to identify other devices that match a predetermined criteria. The present invention comprises a network of clients equipped with recognition equipment and a server (although the present invention may include multiple servers and a single device may function as both a client and a server).

The clients are capable of discovering one another and are capable of being discovered by one another. The process of discovery is defined to be the emission of inquiries followed by acquisition of identifying information from neighboring clients. A discovering client uses its recognition equipment to discover other clients, and the result is that the discovering client gains identifying information about the discovered clients.

Additionally, the server stores user profiles provided by the user themselves. One user may have multiple profiles, one of which is active at any given time. Based upon information supplied by a client, the server first determines that the client is within a predetermined distance of a plurality of other clients. The server then determines which of the plurality of other clients are clients of users with user profiles that satisfies the match criteria of the active profile of the first client.

In one embodiment, when a first user requests information about other users matching a criteria, the server searches through the user profiles, identifies the users who match the first user's criteria and are near the first user, and sends to the first user information about the matching users who are near the first user. The information sent to the first user about the matching users is information that was created by the matching users and approved by the matching users to be disclosed to other users. The first user may view this information using applications that are already commonly found on “smart” everyday items (e.g., web browser and Internet connection).

A client is in active state (SA) when the client is capable of discovering other clients. A client is in passive state (SP) when the client is capable of being discovered by other clients. A client can only be in one state at a time. A primary client is a client that discovers other clients. A secondary client is a client that has been discovered by the primary client. A cycle starts at the primary client's entry into SA and discovery of a secondary client, followed by the transmission of the secondary client's identifying information to the server and the primary client's entry into SP, and ending with the server's matching of the discovering client with other clients based upon data stored on the server. Clients are not permanently designated primary clients or secondary clients—client designation only lasts as long as a single cycle. A client becomes a primary or secondary client depending on the point in time examined and the state in which the client exists at that point in time. Further, there need not be only a single primary client at any one time.

The server includes a client information database that stores client information associated with clients in the network. This client information includes client identifying information (like a client or user ID), client information, a match criteria for each client that determines the criteria that each client is searching for, and match information offered upon the determination that one client matches another. The server further includes a matcher that identifies clients that are neighbors (immediate or not) of the primary client. The matcher then searches the client information database to determine whether any of the neighboring clients have client information that matches the match criteria of the primary client. If so, the server sends the match information associated with the matching neighboring clients to at least the primary client.

The server may also store a topological map of the clients. The topological map consists of nodes (or vertices) that represent each client and edges between the nodes. A single edge between two nodes indicates that the client represented by one node discovered the client represented by the other node. One less than the number of edges between two nodes indicates the number of clients in a chain of discovering clients that separate the two clients represented by the two nodes. If the geographical radius within which each client can discover other clients is n meters, then two clients are separated by the number of meters up to n times the number of edges between the two nodes representing the two clients. The server may also include a topological mapper that updates the topological map when information is received from a primary client.

Further, the server may also include a scheduler that can coordinate the times at which each client goes into SA. This is useful when a group of clients seem not to be moving relative to each other. The scheduler, by coordinating the times at which each client in the group goes into SA, can reduce the amount of instances that each client must go into SA, which in turn reduces redundant discoveries of the same clients by all the clients in the group.

The present invention solves the problems confronted by the existing technology. Since the present invention does not necessitate peer-to-peer interaction, no resource intensive application must reside on the user devices. Also, since the present invention discloses information about users that users have pre-authorized to be disclosed, the privacy problem is ameliorated. The present invention is not targeted for any specific use because each user may have multiple profiles related to different aspects of their lives. The profiles can be tailored to aid the user in finding dating partners or people who share the same interest or hobbies, finding business contacts, finding people who share a common goal (e.g., a carpool partner, or a shared ride to a common airport at a certain time), matching buyers and sellers of the same goods (including allowing sellers to send coupons, promotions, or sale information to interested buyers), and efficiently allocating tasks between groups of people to minimize the number of locations to which each person must travel to get all the tasks done. Also, the present invention is not focused on any geographical region, but available to all users anywhere. The present invention alleviates the problem of data synchronization between devices because the present invention serves as the repository of information for all of its users. Further, since the present invention stores the user profiles and uses applications already on the user devices to display information, there is no need for a resource intensive application to reside on the user devices. Finally, since the present invention includes a centralized server that can schedule the actions of the devices relative to each other, it can be thought of as a moderator in a discussion group to bring order to a group where everyone is trying to talk at the same time. The present invention thus results in a simpler system, a smaller client application, and less redundant discovery.

BRIEF DESCRIPTION OF THE DRAWINGS

Additional objects and features of the present invention will be more readily apparent from the following detailed description and appended claims when taken in conjunction with the drawings, in which:

FIG. 1 depicts a server and several clients that make up the network described in the present invention.

FIG. 2 is a diagram of a network incorporating a preferred embodiment of the present invention.

FIG. 2A is a diagram of a network incorporating another preferred embodiment of the present invention.

FIG. 3 is an example of the information the client information database may contain.

FIG. 4 is a flowchart of the steps through which a client proceeds in one embodiment of the present invention.

FIG. 5 depicts the interaction between two clients.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

Referring to FIG. 1, there is shown network 100 having server 130 and several clients 110, 120. The present invention is not limited to having only one server; multiple servers may function in the present invention. In this particular embodiment, primary client 120 is a Bluetooth enabled cellular phone, and secondary client 110 is a Bluetooth enabled laptop computer. Bluetooth technology enables a device equipped with a Bluetooth transceiver to recognize devices that are also equipped with Bluetooth transceivers (see http://www.bluetooth.com/tech/works.asp). Bluetooth employs a type of discovery in which a discovering client uses its recognition equipment to discover other clients, and the result is that the discovering client gains identifying information about the discovered clients. In the present invention, primary client 120 discovers (step 1) secondary client 110, which results in primary client 120 acquiring secondary client's 110 identifying information. The identifying information identifies the device. In the event that a single user has multiple devices, each device is associated with that single user. In this embodiment, the identifying information is a Bluetooth client address (BD_ADDR), but identifying information may also include a barcode, book ISBN, serial number, or MAC address (Media Access Control address). Primary client 120 then sends (step 2) secondary client's 110 identifying information to server 130, which determines which clients match primary client's 120 match criteria.

In a further embodiment, server 130 then sends (step 3) match information to primary client 120. In this embodiment, the match information consists of URLs for the matching neighboring clients. In another embodiment, a URL for primary client 120 is sent to all the matching neighboring clients. When a client receives match information, the user is notified. Some forms of notification include an SMS (Short Message Service) text message, voice messages, web pages, and client device actions (e.g., vibration, sounds, lights, messages, incoming call, distinctive ringing, reminder sound, etc.).

Yet another embodiment includes the use of displays on clients. For example, the URLs are displayed by the client by creating an HTML, WML, or any language (markup or otherwise) document with the URLs as links. The client then displays the document, and allows a user to select the URLs. The client then selects a URL and sends a browser request (step 4) through a connection (e.g., Internet 140, LAN, WAN, etc.) to retrieve (step 5) the webpage accessible through a selected URL, and displays the webpage that is stored on server 150 on a web browser on the client. The webpage may be a description of the user that is associated with the discovered client whose match information was the selected URL. A further embodiment allows a client that accesses another client's webpage to add to or annotate the webpage, including signing guest books, and leaving messages, comments, or feedback.

The preferred embodiment in FIG. 2 shows clients 210 and the representation of the same clients in topological map 231 stored on server 230. Client B 212, a primary client, discovers clients A 211 and C 213, secondary clients. Client D 214, another primary client, also discovers client C 213, a secondary client. When server 230 receives information from primary client B 212, mapper 233 updates topological map 231 using the received information. When server 230 receives information from primary client D 214, mapper 233 updates topological map 231 using the received information. A topological map consists of nodes (or vertices) that represent each client and edges between the nodes that represent one node discovering another. A single edge between two nodes indicates that the client represented by one node discovered the client represented by the other node. On topological map 231, clients 210 are represented by a group of four nodes, the B node connected to the A and C nodes, and the D node connected to the C node. Since mapper 233 updates topological map 231 upon receiving information from any primary client, the information received from several primary clients can be used to construct topological map 231 that represents all or a majority of the clients, including clients that may have been discovered by one primary client but not another. Thus, the D node is within three edges to the A node and within two edges to the B node, even though client D 214 did not discover or was not discovered by clients A 211 or B 212. This, in turn, means that clients A 211 and D 214 may be matched with each other even though neither discovered the other.

In another embodiment of the present invention, illustrated in FIG. 2A, a non-client device may be used to construct topological map 231. Clients 210 are generally capable of communicating identifying information to server 230. A non-client 216 is a device that is discoverable and may be capable of discovery, but incapable of communicating with server 230. A non-client device may be incapable of communicating with server 230 for a variety of reasons, one of which is that the non-client device is not registered with server 230. Referring to FIG. 2A, suppose primary clients D 214 and F 217 discover non-client E 216. Both primary clients D 214 and F 217 communicate non-client E's 216 identifying information to server 230. Mapper 233 incorporates the identifying information and updates topological map 231 to indicate that client F 217 is only two edges away from client D 214, even though clients D 214 and F 217 did not discover each other.

Referring back to FIG. 2, client information database 232 is shown. A user's profile on the client information database 232 is fully configurable by a user. For example, a user may set multiple profiles that are stored on client information database 232. The user is then able to select, even through the user's client device, the profile that the user desires to be active at a particular time. Client information database 232 stores client information, including identifying information, match criteria, and match information for each client. Client information is information about the user of a client device 210, and is used by server 230 to determine matches with other clients 210. Identifying information is information that particularly identifies each client. Match criteria is the criteria that a user wishes a matching user to possess. Match information is the information that is provided when the client whose profile includes the match information is found to have client information that matches another client's match criteria. Match information may include URL(s). Each client may have multiple profiles, and different match criteria and match information for each profile or the same match criteria and match information for all of a client's profiles.

FIG. 3 shows an example of what client information database 232 can contain. Each user may have more than one profile to accommodate the various environments and goals that each user may have. The example in FIG. 3 shows a match. John's Personal profile has match criteria “Can tolerate cats” because John is a cat lover and wishes to find a person who can tolerate cats. Lynda's Personal profile contains client information “Dog hater, can tolerate cats.” Lynda's match information will be sent to John if John, when Lynda is within his vicinity, happened to have his Personal profile active. Additionally, in another embodiment, server 130 may be configured to search only active profiles when determining matches. Therefore, even though, as in FIG. 3, Lynda's Personal profile matches John's Personal profile, if Lynda's Personal profile were not active at the time server 130 was searching for matches to John's Personal profile, Lynda would not be identified as a match by server 130.

Also shown in FIG. 3 is another match. Kimberly's Shopping profile contains match criteria “Shoe sales” because Kimberly loves shoes. Frank's Shoe Store has a Business profile that contains client information “Shoe seller.” If Kimberly is walking through a shopping mall and has elected her Shopping profile to be active, and Frank's Shoe Store has its Business profile active, then when Kimberly comes within the vicinity of, for example, a cash register computer at Frank's Shoe Store, then Kimberly can receive Frank's Shoe Store's match information. In this case, the match information is Frank's Shoe Store's website and may contain a promotion or sale (e.g., 20% off) that would convince Kimberly to visit Frank's Shoe Store.

Finally, FIG. 3 shows a third match. John's Business profile has a match criteria of “Paralegal” since John is a lawyer and is looking to hire a paralegal. Kimberly's Business profile has client information “Paralegal” since she is a paralegal by profession. This means that matcher 234 will list Kimberly as a matching neighbor of John and send John Kimberly's match information. In this case, Kimberly's match information is a URL leading to a website that may contain her resume.

Referring back to FIG. 2, after information from the primary client is updated to server 230, matcher 234 on server 230 identifies the neighboring clients. Matcher 234 then searches client information database 232 to determine which clients 210 have client information that matches the primary client's match criteria. Server 230 may send the match information of matching neighboring client(s) 210 to the primary client. For example, in FIG. 2, suppose matcher 234 identifies clients A 211, C 213, and D 214 as neighboring clients for primary client B 212. Further, suppose that clients A 211 and B 212 have John's Business profile and Kimberly's Business profile, respectively. Client A 211 would become a matching neighboring client. Server 230 then sends client A's 211 match information to client B 212. In another embodiment, server 230, upon determining the matching neighboring clients of a primary client, will send the primary client's match information to all the matching neighboring clients. In yet another embodiment, server 230 will store data indicating the matching clients for client A 211 or client B 212.

A preferred embodiment allows a “boundary” to be set in the determination of neighboring clients. The boundary may be in the form of a predetermined number of edges. Only clients 210 represented by nodes within a predetermined number of edges to the node representing the primary client are considered neighboring clients. For example, referring back to FIG. 2, suppose the predetermined number of edges is less than or equal to two. Then, the neighboring clients to client D 214 will only include clients B 212 and C 213. Client A 211, three edges away from client D 214, will not be included as a neighboring client. The predetermined number of edges can be selected based upon many different types of criteria, including “between x and y edges,” “less than x edges,” “more than y edges,” etc. For example, referring to FIG. 2A, suppose the predetermined number of edges is less than two edges and suppose the geographical radius within which each client can discover other clients is ten meters. This is useful for a user who wishes to be alerted to matching users who are within twenty meters of the user. For example, if client G 215 were the primary client and the boundary set for G 215 were “less than 2 edges”, then the neighboring clients for client G 215 would only include clients A 211, B 212, C 213, D214 and E216.

Another type of boundary that can be set is a numerical boundary that limits the number of clients that can be considered neighboring clients. For example, referring to FIG. 2A, if the boundary were set to two neighboring clients, and client C 213 is the primary client, then two out of the three nearest clients to client C 213 (clients B 212, D 214, or G 215) will be neighboring clients. The process to decide which two of the three can be random, on a first discovered first serve basis, or based upon any number of criteria. Again, this boundary can be many different types of criteria, including “between x and y clients,” “less than x clients,” “at least y clients,” etc. For example, the boundary may be set to “at least three clients” if a user wished to find a group to play Charades, a game requiring at least two people to a team.

Referring now to FIG. 4, there is shown a flowchart 400 of the steps primary client 410 proceeds through in one embodiment of the present invention. In one embodiment of the present invention, clients 210 alternate being in active state (SA) or passive state (SP). In SA, a client is capable of discovering, but incapable of being discovered. In SP, a client is capable of being discovered, but incapable of discovering. In another embodiment of the present invention, the duration of SA is randomized between clients, thus decreasing the probability that clients will fall into synchronized cycles in which two clients always go into SA at the same time and for the same duration, which prevents the clients from discovering each other.

In FIG. 4, primary client 410 starts off in SA 420, and spends T_(SA) (a time period measured in, for example, seconds) in SA. During this time, primary client 410 is capable of discovering other clients 210 but incapable of being discovered. After discovering surrounding secondary clients, primary client 410 goes into SP 425, and sends 430 the identifying information of discovered secondary clients to server 230 as a request 431.

Since a client can either be discovering or be discovered, but not both simultaneously, some embodiments provide a centralized scheduling mechanism that minimizes the overlap of two or more clients 210 in the same geographical vicinity from being in SA or SP at the same time. In one embodiment, topological map 231 is used in conjunction with a flag to indicate to a primary client whether to go into SA or to stay in SP for the duration that that primary client would have been in SA. In this embodiment, topological map 231 stored on server 230 includes a discovery timestamp (T_(i)) associated with each node. T_(i) designates the time at which each node last performed discovery. When server 230 receives a request 431 from a primary client, server 230 first updates 432 topological map 231. Then matcher 234 identifies matching neighboring clients 433. At this time, scheduler 235 selects 434 the neighboring client with the most recent T_(i) (T_(imax)). If the current time (T_(C)) is less than the sum of T_(imax) and a predetermined discovery threshold (T_(D)), T_(C)<T_(imax)+T_(D) then scheduler 235 sets a flag 437. Otherwise, the flag is not set 436 and the nodes T_(i) is set to T_(C). This flag is sent back 438 to primary client 410 along with match information. Primary client 410 then determines 450 whether the flag was set. If the flag was set, primary client 410 remains in SP for the duration of the following SA and SP portions of the cycle and remains discoverable for that duration. If the flag is not set, then primary client 410 goes into SA and performs discovery of other clients.

In another embodiment, scheduler 235 identifies a locality group comprised of a plurality of clients within a predetermined distance from each other and that appear to be stationary relative to each other for a set period of time. Server 230 then sends a message to each client in the locality group, instructing each client to go into SA for the same time interval but starting at different times. This results in staggered discovery for the clients in the locality group. For example, referring to FIG. 2, suppose that the scheduler has identified clients A 211, B 212, C 213, and D 214 to be a locality group. Further, IN=T, where I is the number of seconds between each discovery in the locality group, N is the number of clients in the locality group, and T is the number of seconds that each client in the locality group remains in SP. Referring back to FIG. 2, if scheduler 235 determines that discovery in the locality group should be performed once every ten seconds, then I=10 seconds, N=4, and T=40 seconds. Thus, server 230 sends a message to each client instructing each client to go into SA every 40 seconds starting at a different time, with each start time staggered 10 seconds apart. So, client A 211 will be instructed to go into SA at time t and then go back into SP until t+40; client B 212 will be instructed to go into SA at time t+10 and then go back into SP until t+10+40; client C 213 will be instructed to go into SA at time t+20 and then go back into SP until t+20+40; and client D 214 will be instructed to go into SA at time t+30 and then go back into SP until t+30+40. t then gets increased by T for each client after each client goes into SA. When any of the clients in the locality group discover one more or one less client within the predetermined distance, then mapper 233 updates topological map 231, and scheduler 235 changes the composition of the locality group, N, I, and T accordingly.

In a further embodiment, the scheduler keeps track of the time when each client, represented by a node in the topological map, last performed discovery (i.e., went into SA). If the elapsed time from the time a client last performed discovery is greater than a predetermined period of time, then the scheduler sends a message to that client to go into SA and perform discovery.

Referring to FIG. 5, there is shown the interaction between two clients. The overlapping inquiry windows are times when both clients are in SA and functioning as primary clients during which both are incapable of being discovered by the other. In one embodiment, in order to decrease occurrences and duration of overlapping inquiry windows, T_(D) should fall within a range. In this embodiment, T_(D) falls within a range, the lower bound (T_(LO)) of which equals the average duration of SA (T_(A)) minus a predetermined allowance of variation in SA duration (D_(SA)) minus twice a predetermined allowance of variation in SP duration (D_(SP)), T _(LO) =T _(A) −D _(SA)−2*D _(SP) and the upper bound (T_(H1)) of which equals the average duration of SA (T_(A)) plus the predetermined allowance of variation in SA duration (D_(SA)) Plus twice the predetermined allowance of variation in SP and duration (D_(SP)). T _(H1) =T _(A) +D _(SA)+2*D _(SP) Thus, in this embodiment, T_(LO)≦T_(D)<T_(H1) as T_(D) increases from T_(LO) to T_(H1), the occurrences and duration of overlapping inquiry windows decreases.

In yet another embodiment, the predetermined discovery threshold is tunable by an administrator based upon the environment that the group of clients 210 are in. For example, the predetermined discovery threshold can be increased or decreased depending on how crowded the environment is.

In all of the embodiments relating to the scheduling of a client's SA or SP, a person skilled in the art should understand that topological map 231 is not necessary. All the information associated with the nodes of topological map 231 can be stored in client information database 232 or any memory module on server 230 instead.

It is intended that the scope of the present invention be defined by the following claims and their equivalents. 

1. A network, wherein discovery consists of emitting a plurality of requests and acquiring identifying information, the network comprising: a plurality of clients configured to send and receive information and configured to be either in a mode to discover other clients or in a mode to be discoverable by other clients, the plurality of clients including: a plurality of secondary clients in the mode to be discoverable; and at least one primary client in the mode to discover secondary clients; and at least one server configured to send information to and receive information from the at least one primary client, the information received from the at least one primary client including identifying information of a plurality of discovered secondary clients, the at least one server including: a client information database for storing client information associated with the plurality of clients, including identifying information, match information, and match criteria; a matcher configured to identify matching secondary clients by determining neighboring secondary clients, and determining which neighboring secondary clients have client information that match the primary client's match criteria; and wherein when the at least one primary client sends to the at least one server the identifying information of the secondary clients acquired by the at least one primary client, and the matcher identifies matching secondary clients.
 2. The network in claim 1, wherein the at least one server transmits match information.
 3. The network in claim 2, wherein the at least one server transmits the match information of the matching secondary clients to the at least one primary client.
 4. The network in claim 2, wherein the at least one server transmits the match information of the matching secondary clients to a third party.
 5. The network in claim 1, wherein the at least one server further includes: a topological map representing the plurality of clients, the topological map comprising nodes representing and associated with each client and edges between the nodes such that each node representing the at least one primary client is within one edge to the nodes representing the secondary clients that the at least one primary client has discovered; and a topological mapper configured to update the topological map upon the at least one server's receipt of information from the at least one primary client; and wherein the matcher further uses the topological map updated by the topological mapper to identify the list of matching secondary clients.
 6. The network in claim 2, wherein the at least one server transmits the match information of the primary client to the matching secondary clients.
 7. The network of claim 2, wherein the match information includes a URL.
 8. The network in claim 7, wherein at least one of the plurality of clients further includes a display.
 9. The network of claim 8, wherein at least one of the plurality of clients that includes a display further includes: a webpage creator creating a webpage that displays the URLs included in the match information received from the server as links; an Internet connection; and a web browser that displays the webpage created by the web page creator and the web pages indicated by the URLs displayed thereon.
 10. The network of claim 9, wherein at least one of the plurality of clients that includes a display is configured to annotate the webpages indicated by the URLs displayed on the web browser.
 11. The network of claim 1, wherein the matcher's identification of matching secondary clients are limited by a boundary.
 12. The network in claim 1 1, wherein the boundary is a predetermined number of clients from the primary client.
 13. The network of claim 11, wherein the boundary is a predetermined number of matching secondary clients.
 14. The network in claim 1, wherein each of the plurality of clients cycles between the active state (SA), during which a client discovers other clients, or the passive state (SP), during which a client is discoverable.
 15. The network in claim 14, wherein either or both of the duration of the active state (SA) and the duration of the passive state (SP) are random.
 16. The network in claim 14, wherein the at least one server is further configured to control the duration of the active state (SA) and the duration of the passive state (SP) for each of the plurality of clients.
 17. The network in claim 16, wherein the client information stored on the client information database further includes a discovery timestamp associated with each client, designating the time at which each client was most recently in the active state (SA); and the at least one server further includes a scheduler configured to schedule the discovery activity of the plurality of clients.
 18. The network of claim 17, wherein the scheduler schedules the discovery activity of the at least one primary client by selecting the neighboring secondary client with the most recent discovery timestamp, then setting a skip flag only if the current time is less than the timestamp plus a predetermined discovery threshold, the server sending the flag along with the match information of the matching secondary clients to the primary client; and the at least one primary client further configured to skip the active state (SA) and remain in the passive state (SP) for the duration of the active state (SA) portion of the cycle if the skip flag is set.
 19. The network of claim 18, wherein the predetermined discovery threshold is tunable.
 20. The network of claim 18, wherein the predetermined discovery threshold is greater than the average duration of the active state (SA) minus a predetermined allowance of variation in the active state (SA) duration (D_(SA)) minus twice a predetermined allowance of variation in the passive state (SP) duration (D_(SP)), but greater than the average duration of the active state (SA) plus the predetermined allowance of variation in the active state (SA) duration (D_(SA)) plus twice the predetermined allowance of variation in the passive state (SP) duration (D_(SP)).
 21. The network in claim 18, wherein the scheduler schedules the discovery activity of a neighboring secondary client by selecting the neighboring secondary client with the least recent discovery timestamp, and sending an instruction to the neighboring secondary client to go into active state (SA); and the at least one primary client further configured to skip the active state (SA) and remain in the passive state (SP) for the duration of the active state (SA) portion of the cycle.
 22. The network in claim 17, wherein the scheduler further identifies a locality group of the at least one primary client, the locality group consisting of the at least one primary client and the secondary clients that are within a predetermined distance from the at least one primary client; and the server further sends a message to each client in the locality group instructing each client to go into active state (SA) at different times but to remain in passive state (SP) at the same time interval, wherein the time interval at which the clients are instructed to remain in SP depends upon the number of clients in the locality group and a predetermined frequency at which a client in the locality group must go into SA.
 23. The network of claim 1, further comprising: a plurality of non-clients, configured to be discoverable; wherein the at least one primary client is further configured to discover non-clients; and the information received from the at least one primary client further including identifying information from the discovered non-clients.
 24. The network of claim 23, wherein the server further comprising: a topological map representing the plurality of clients and the plurality of non-clients, the topological map further comprising nodes representing and associated with each client and non-client, and edges between the nodes such that each node representing the at least one primary client is within one edge to the nodes representing the secondary clients and the non-clients that the at least one primary client discovered.
 25. A system for detecting clients that match a predetermined criteria, wherein discovery consists of emitting a plurality of requests and acquiring identifying information, the system comprising: a plurality of client modules configured to send and receive information, the plurality of client module s including: a plurality of secondary client modules configured to be discoverable; and at least one primary client module configured to discover secondary client modules; and at least one server module configured to send information to and receive information from the at least one primary client module, the information received from the at least one primary client module including identifying information of the discovered secondary client modules, the at least one server module including: a client information database for storing client information associated with the plurality of client modules, including identifying information, match information, and match criteria; a matcher configured to identify matching secondary client modules by determining neighboring secondary client modules, and determining which neighboring secondary client modules have client information that match the primary client module's match criteria; and wherein when the at least one primary client module sends to the at least one server module the identifying information of the secondary client modules acquired by the at least one primary client module, and the matcher identifies matching secondary client modules.
 26. The system in claim 25, wherein the at least one server module transmits match information.
 27. The system in claim 26, wherein the at least one server module transmits the match information of the matching secondary client modules to the at least one primary client module.
 28. The system in claim 26, wherein the at least one server module transmits the match information of the secondary clients to a third party.
 29. The system in claim 25, wherein the at least one server further includes: a topological map representing the plurality of client modules, the topological map comprising nodes representing and associated with each client module and edges between the nodes such that each node representing the at least one primary client module is within one edge to the nodes representing the secondary client modules that the at least one primary client module has discovered; and a topological mapper configured to update the topological map upon the at least one server's receipt of information from the at least one primary client module; and wherein the matcher further uses the topological map updated by the topological mapper to identify the list of matching secondary client modules.
 30. The system in claim 26, wherein the at least one server module sends the match information of the primary client module to the matching secondary client modules.
 31. The system of claim 26, wherein the match information includes a URL.
 32. The system in claim 31, wherein at least one of the plurality of client modules further includes a display.
 33. The system of claim 32, wherein the at least one of the plurality of client modules that includes a display further includes: a webpage creator creating a webpage that displays the URLs included in the match information received from the server as links; an Internet connection; and a web browser that displays the webpage created by the web page creator and the web pages indicated by the URLs displayed thereon.
 34. The system of claim 33, wherein the at least one of the plurality of client modules that includes a display is configured to annotate the webpages indicated by the URLs displayed on the web browser.
 35. The system of claim 25, wherein the matcher's identification of matching secondary client modules are limited by a boundary.
 36. The system in claim 35, wherein the boundary is a predetermined number of client modules from the primary client module.
 37. The system of claim 35, wherein the boundary is a predetermined number of matching secondary client modules.
 38. The system in claim 25, wherein each of the plurality of client modules cycles between the active state (SA), during which a client module discovers other client modules, or the passive state (SP), during which a client module is discoverable.
 39. The system in claim 38, wherein either or both of the duration of the active state (SA) and the duration of the passive state (SP) are random.
 40. The system in claim 38, wherein the at least one server module is further configured to control the duration of the active state (SA) and the duration of the passive state (SP) for each of the plurality of client modules.
 41. The system in claim 40, wherein the client module information stored on the client module information database further includes a discovery timestamp associated with each client module, designating the time at which each client module was most recently in the active state (SA); and the at least one server further includes a scheduler configured to schedule the discovery activity of the plurality of client modules.
 42. The system in claim 41, wherein the scheduler schedules the discovery activity of the at least one primary client module by selecting the neighboring secondary client module with the most recent discovery timestamp, then setting a skip flag only if the current time is less than the timestamp plus a predetermined discovery threshold, the server module sending the flag along with the match information of the matching secondary client modules to the primary client module; and the at least one primary client module further configured to skip the active state (SA) and remain in the passive state (SP) for the duration of the active state (SA) portion of the cycle if the skip flag is set.
 43. The system of claim 42, wherein the predetermined discovery threshold is tunable.
 44. The system of claim 42, wherein the predetermined discovery threshold is greater than the average duration of the active state (SA) minus a predetermined allowance of variation in the active state (SA) duration (D_(SA)) minus twice a predetermined allowance of variation in the passive state (SP) duration (D_(SP)), but greater than the average duration of the active state (SA) plus the predetermined allowance of variation in the active state (SA) duration (D_(SA)) plus twice the predetermined allowance of variation in the passive state (SP) duration (D_(SP)).
 45. The system in claim 42, wherein the client module information stored on the client module information database further including a discovery timestamp associated with each client module, designating the time at which the client module was most recently in the active state (SA); and the at least one server further including a scheduler configured to schedule the discovery activity of the at least one primary client module by selecting the neighboring secondary client module with the least recent discovery timestamp, and sending an instruction to the neighboring secondary client module to go into active state (SA); and the at least one primary client module further configured to skip the active state (SA) and remain in the passive state (SP) for the duration of the active state (SA) portion of the cycle.
 46. The system of claim 41, wherein the scheduler further identifies a locality group of the at least one primary client, the locality group consisting of the at least one primary client and the secondary clients that are within a predetermined distance from the at least one primary client; and the server module further sends a message to each client in the locality group instructing each client to go into active state (SA) at different times but to remain in passive state (SP) at the same time interval, wherein the time interval at which the clients are instructed to remain in SP depends upon the number of clients in the locality group and a predetermined frequency at which a client in the locality group must go into SA.
 47. The system of claim 25, further comprising: a plurality of non-client modules, configured to be discoverable; wherein the at least one primary client module is further configured to discover non-client modules; and the information received from the at least one primary client module further including identifying information from the discovered non-client modules.
 48. The system of claim 47, wherein the server further comprising: a topological map representing the plurality of client modules and the plurality of non-client modules, the topological map further comprising nodes representing and associated with each client module and non-client module, and edges between the nodes such that each node representing the at least one primary client module is within one edge to the nodes representing the secondary client modules and the non-client modules that the at least one primary client module discovered.
 49. A method of operating a network, wherein discovery consists of emitting a plurality of requests and acquiring identifying information, the network comprising at least one server and a plurality of clients configured to send and receive information, the plurality of clients including a plurality of secondary clients configured to be discoverable and at least one primary client configured to discover secondary clients, the method comprising the steps of: at the at least one primary client: discovering secondary clients; and sending information, including the identifying information, to the server; at the at least one server: receiving information from the at least one primary client; updating a client information database with the information from the at least one primary client; determining neighboring secondary clients; and searching the client information database that stores client information associated with the plurality of clients, including identifying information, match information, and match criteria, for client information of neighboring secondary clients that match the at least one primary client's match criteria to identify matching secondary clients.
 50. The method of claim 49, further comprising the step of: at the at least one server: transmitting match information.
 51. The method of claim 50, wherein at the at least one server, the transmitted match information is the match information of the matching secondary clients and the transmitted match information is transmitted to the at least one primary client.
 52. The method of claim 50, wherein at the at least one server, the transmitted match information is the match information of the matching secondary clients and the transmitted match information is transmitted to a third party.
 53. The method of claim 49, further comprising the steps of: at the at least one server: after the step of updating the client information database, updating a topological map representing the plurality of clients, the topological map comprising nodes representing and associated with each client and edges between the nodes such that each node representing the at least one primary client is within one edge to the nodes representing the secondary clients that the at least one primary client has discovered; and the searching step further includes using the updated topological map.
 54. The method of claim 50, wherein at the at least one server, the transmitted match information is the match information of the at least one primary client and the transmitted match information is transmitted to the matching secondary clients.
 55. The method of claim 50, wherein the match information includes a URL.
 56. The method of claim 55, wherein at least one of the plurality of clients further includes a display.
 57. The method of claim 56, further comprising the steps of: at the at least one of the plurality of clients that includes a display: creating a webpage that displays the URLs included in the match information received from the server as links; displaying the webpage in a web browser; and further displaying the webpages indicated by the URLs.
 58. The method of claim 57, further comprising the step of: at the at least one of the plurality of clients that includes a display: annotating the webpages indicated by the URLs.
 59. The method of claim 49, wherein the step of determining further includes limiting the neighboring secondary clients by a boundary.
 60. The method of claim 59, wherein the boundary is a predetermined number of clients from the primary client.
 61. The method of claim 59, wherein the boundary is a predetermined number of matching secondary clients.
 62. The method of claim 49, wherein each of the plurality of clients cycles between the active state (SA), during which a client discovers other clients, or the passive state (SP), during which a client is discoverable.
 63. The method of claim 62, wherein either or both of the duration of the active state (SA) and the duration of the passive state (SP) are random.
 64. The method of claim 62, wherein the at least one server is further configured to control the duration of the active state (SA) and the duration of the passive state (SP) for each of the plurality of clients.
 65. The method of claim 64, wherein the client information stored on the client information database further includes a discovery timestamp associated with each client, designating the time at which each client was most recently in the active state (SA), the method further including the step of: at the at least one server: scheduling the discovery activity of the plurality of clients.
 66. The method of claim 65, further including the steps of: at the at least one server: updating the client information stored for the primary client with the current time as the discovery timestamp for the at least one primary client; selecting the neighboring secondary client with the most recent discovery timestamp; setting a skip flag only if the current time is less than the timestamp plus a predetermined discovery threshold; and transmitting the match information of the matching secondary clients and the flag to the primary client; and at the at least one primary client: skipping the active state (SA); and remaining in the passive state (SP) for the duration of the active state (SA) portion of the cycle if the skip flag is set.
 67. The method of claim 66, wherein the predetermined discovery threshold is tunable.
 68. The method of claim 66, wherein the predetermined discovery threshold is greater than the average duration of the active state (SA) minus a predetermined allowance of variation in the active state (SA) duration (D_(SA)) minus twice a predetermined allowance of variation in the passive state (SP) duration (D_(SP)), but greater than the average duration of the active state (SA) plus the predetermined allowance of variation in the active state (SA) duration (D_(SA)) plus twice the predetermined allowance of variation in the passive state (SP) duration (D_(SP)).
 69. The method of claim 65, further comprising the steps of: at the at least one server: the updating step further includes associating a discovery timestamp with each client, designating the time at which the client was most recently in the active state (SA); the scheduling step further includes selecting the neighboring secondary client with the least recent discovery timestamp; and sending an instruction to the neighboring secondary client to go into active state (SA); and at the at least one primary client: skipping the active state (SA); and remaining in the passive state (SP) for the duration of the active state (SA) portion of the cycle.
 70. The method of claim 65, further comprising the steps of: at the at least one server: identifying a locality group of the at least one primary client, the locality group consisting of the at least one primary client and the secondary clients that are within a predetermined distance from the at least one primary client; and sending a message to each client in the locality group instructing each client to go into active state (SA) at different times but to remain in passive state (SP) at the same time interval, wherein the time interval at which the clients are instructed to remain in SP depends upon the number of clients in the locality group and a predetermined frequency at which a client in the locality group must go into SA.
 71. The method of claim 49, wherein the network further comprises a plurality of non-clients, configured to be discoverable, said method further comprising the steps of: at the at least one primary client: the discovering step further comprising discovering non-clients; the receiving step further comprising receiving identifying information from the discovered non-clients; and the sending step further comprising including identifying information from the discovered non-clients in the information sent; and at the server: the updating step further including updating the client information database with information from the discovered non-clients.
 72. The method of claim 71, further comprising: at the server: updating a topological map representing the plurality of clients and non-clients, the topological map further comprising nodes representing and associated with each client and non-client, and edges between the nodes such that each node representing the at least one primary client is within one edge to the nodes representing the secondary clients and the non-clients that the at least one primary client has discovered; and the searching step further includes searching the topological map.
 73. A computer media, wherein discovery consists of emitting a plurality of requests and acquiring identifying information, the computer media comprising: a data structure including characteristic information about a plurality of clients and an access flag for each client represented, the access flag being in one of two states consisting of active and passive, the plurality of clients including at least one primary client that discovers and a plurality of secondary clients that are discoverable; instructions for receiving an indication that the primary client represented in the data structure is within a predetermined distance of the secondary clients represented in the data structure; wherein the access flag for the primary client is set to the active state; the access flags for the plurality of secondary clients is set to the passive state; and instructions for finding secondary clients represented in the data structure with characteristic information matching the primary client's characteristic information.
 74. The computer media in claim 73, further comprising instructions for transmitting characteristic information.
 75. The computer media in claim 73, further comprising instructions for creating a topological map of the plurality of clients.
 76. The computer media in claim 75, further comprising instructions for including a plurality of non-clients in the topological map.
 77. The computer media in claim 73, further comprising instructions for scheduling the change of access flags for each of the clients.
 78. The computer media in claim 73, wherein the instructions for finding secondary clients further include setting a boundary for the secondary clients that may be considered as having characteristic information that matches the primary client's characteristic information.
 79. The computer media in claim 73, wherein the characteristic information includes URLs. 